PointsTo Analysis
نویسنده
چکیده
from Chakaravarthy [3]: Given a program and two variables p and q, the goal of pointsto analysis is to check if p can point to q in some execution of the program. This well studied problem plays a crucial role in compiler optimization. The problem is known to be un decidable when dynamic memory is allowed. But the result is known only when variables are al lowed to be structures. We extend the result to show that, the problem remains undecidable, even when only scalar variables are allowed. Our sec ond result deals with a version of pointsto anal ysis called flowinsensitive analysis, where one ig nores the control flow of the program and assumes that the statements can be executed in any or der. The problem is known to be NPHard, even when dynamic memory is not allowed and vari ables are scalar. We show that when the variables are further restricted to have welldefined data types, the problem is in P. The corresponding flow sensitive version, even with further restrictions, is known to be PSPACEComplete. Thus, our result gives some theoretical evidence that flow insensitive analysis is easier than flowsensitive analysis. Moreover, while most variations of the pointsto analysis are known to be computation ally hard, our result gives a rare instance of a non trivial pointsto problem solvable in polynomial time. Ramalingam [27]: Aliasing is undecidable Landi [17]: PSPACEcomplete even with no procedures or memory allocations Landi and Ryder [18]
منابع مشابه
Eventually Sound Points-To Analysis with Missing Code
Static analyses make the increasingly tenuous assumption that all source code is available for analysis; for example, large libraries often call into native code that cannot be analyzed. We propose a pointsto analysis that initially makes optimistic assumptions about missing code, and then inserts runtime checks that report counterexamples to these assumptions that occur during execution. Our a...
متن کاملAn Efficient Inclusion-Based Points-To Analysis for Strictly-Typed Languages
We describe the design and implementation of an efficient inclusion-based points-to analysis for strictly-typed object-oriented languages. Our implementation easily scales to millions of lines of Java code, and it supports language features such as inheritance, object fields, exceptional control flow, type casting, dynamic dispatch, and reflection. Our algorithm is based on Heintz and Tardieu’s...
متن کاملInterprocedural Side-Effect Analysis and Optimisation in the Presence of Dynamic Class Loading
We introduce a new approach to computing interprocedural modification side effects for Java programs in the presence of dynamic class loading. When compile-time unknown classes can be loaded dynamically, the pointsto and modification sets computed statically based on the analysed program, called internal world, may be incomplete. Thus, the modification side effects cannot be determined based on...
متن کاملImproving bit-vector representation of points-to sets using class hierarchy
Points-to analysis is the problem of approximating run-time values of pointers statically or at compile-time. Pointsto sets are used to store the approximated values of pointers during points-to analysis. Memory usage and running time limit the ability of points-to analysis to analyze large programs. To our knowledge, works which have implemented a bit-vector representation of points-to sets so...
متن کاملCall Graph Extraction in the Presence of Function Pointers
Software engineers need to understand programs in order to effectively maintain them. The call graph, which presents the calling relationships between functions, is a useful representation of a program that can aid understanding. For programs without the use of function pointers, the call graph can be extracted by parsing the program. However, for programs with function pointers, call graph ext...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2005